package com.study.ssm.annotation.injection;

import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author zhoujunlin
 * @date 2023年07月26日 10:26
 * @desc
 */
@Service
public class UserServiceImpl implements UserService {

    /*
    基于类型的注⼊：注⼊对象的类型，必须与⽬标成员变量类型相同或者是其⼦类（实现类）
    基于名字的注⼊：注⼊对象的id值，必须与Qualifier注解中设置的名字相同
    @Autowired
    @Qualifier("userDAOImpl")

    <bean id="userService" class="com.study.ssm.annotation.injection.UserServiceImpl">
        <property name="userDAO" ref="userDAOImpl"/>
    </bean>
    */

    /**
     * 如果在应⽤Resource注解时，名字没有配对成功，那么他会继续按照类型进⾏注⼊。
     */
    @Resource(name = "userDAOImpl")
    private UserDAO userDAO;

    @Override
    public int register() {
        userDAO.save();
        return 0;
    }

    public UserDAO getUserDAO() {
        return userDAO;
    }

    public void setUserDAO(UserDAO userDAO) {
        // 验证属性注入不会调用set方法
        System.out.println("UserServiceImpl.setUserDAO");
        this.userDAO = userDAO;
    }
}
